#ifndef FSM_STATE_H
#define FSM_STATE_H



struct Telegram;

//==============================================================================
// FSM state base class. 
template <class entity_type>
class State {
public:
	virtual void enter(entity_type*) = 0;

	virtual void execute(entity_type*) = 0;

	virtual void exit(entity_type*) = 0;

	virtual bool onMessage(entity_type*, const Telegram&) = 0;

	virtual ~State() {}
};
//==============================================================================

#endif